package com.yuesystem.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuesystem.dto.responsebody.ApplyResponseBody;
import com.yuesystem.entity.Apply;

/**
 * 申请接口.
 */
public interface ApplyService extends IService<Apply> {
  /**
   * 根据用户ID查询是否该用户已申请.
   *
   * @param userId 用户id
   * @return 申请类
   */
  Apply getByUserId(Long userId);

  /**
   * 用户申请成为编辑.
   *
   * @param userId 用户id
   */
  void add(Long userId);

  /**
   * 分页查询未处理的申请.
   *
   * @param page 起始页
   * @param pageSize 页数
   * @return 申请响应类的分页形式
   */
  Page<ApplyResponseBody> getPage(int page, int pageSize);

  /**
   * 管理员同意某个申请.
   *
   * @param id 申请编号
   */
  void agree(Long id);

  /**
   * 管理员拒绝某个申请.
   *
   * @param id 申请编号
   */
  void disagree(Long id);

  /**
   * 是否可申请.
   *
   * @param currentId 用户id
   * @return 是否可申请
   */
  Boolean judge(Long currentId);

  /**
   * 根据用户id删除该用户的未被处理的申请.
   *
   * @param userId 用户id
   */
  void deleteById(Long userId);
}
